This invention relates generally to computers either standing alone, or operated in computer networks, and more particularly to a method for enhancing the operations of a graphical user interface in a single or multi-windowed graphics environment.
Today most users interact with their personal computers via graphical user interfaces (GUIs) typified by the Windows and Macintosh operating systems. Such GUIs frequently display each working program within a rectangular portion of the display screen called a xe2x80x9cframexe2x80x9d or xe2x80x9cwindow.xe2x80x9d
A window can be small or fill up the whole screen. Frequently a window can be resized by the user by xe2x80x9cpoint, click and dragxe2x80x9d or by programmed software controls. Likewise, in many instances, a window can be positioned or moved by the user by xe2x80x9cpoint, click and dragxe2x80x9d or by software programming. In many instances, a window can be xe2x80x9cminimizedxe2x80x9d which keeps the program working, but reduces the window to a mere label or button or icon and places the label or button on the status line of the display, or otherwise masks the window. Frequently, a window or frame can be minimized by the user by clicking on an icon, or by software within the window""s program.
The display screen may contain more than one window, either side-by-side or overlapping. The multiple windows may be different programs, or multiple instances of the same program. In multi-tasking environments, each window may be processing information and data, locally or remotely, even if it is partly or fully covered by another window.
Even though several windows may be working at one time, one window is designated as xe2x80x9cactivexe2x80x9d by the system and the system looks for user input through that window. The xe2x80x9cactivexe2x80x9d window is usually fully visible, and is usually xe2x80x9con topxe2x80x9d of the others. When a window first opens, it is usually considered active and usually goes on top. When a user clicks on part of a window (even if most is hidden) that window usually becomes active and usually goes on top.
Some computer processes take a discernible amount of time, including recalculating large spreadsheets, or searching long documents for phrases, producing CAD based graphics or downloading data from a remote source. In a multi-tasking computer system, the user does not have to sit idle while the processing occurs, but can work on a different program (a) by opening another window for the different program, (b) by clicking on a portion of the different program""s window if previously opened or (c ) by minimizing the window of the program engaged in the lengthy processing. In some programs, the user may also use a drop down list to select among current working windows, even if hidden. In the recently released Internet Explorer 4.0 integration with the Windows 95 desktop, a user can minimize all open windows by clicking on a single icon to view the basic underlying xe2x80x9cdesktop.xe2x80x9d
Nonetheless, many computer users do sit idle during certain long processes. Sometimes it is because they are absorbed in the current task and forget the option of working on another. Sometimes it is because they believe that in switching to another task (and program) they may get distracted from the current task at hand, and fail to return in a timely manner. (After all, one can not tell when the program in a minimized window completes its processing.) Sometimes it is because users believe the process will take only a short time, so that switching windows is wasted effort because no useful or pleasant task can be done in the expected short waiting period.
Partial remedies are found in xe2x80x9cscreen-saverxe2x80x9d programs. If the processing time is lengthy, the lack of user input may cause the system to display a xe2x80x9cscreen-saverxe2x80x9d program, which may contain electronic images, or electronic news bulletins (e.g., the Pointcast system). These screen-saver programs start the display after a certain preset time of user inactivity, i.e. no inputs from the user such as striking keys on a keyboard or moving a mouse; and they end the display (returning to the xe2x80x9cactivexe2x80x9d program or underlying desktop) when user input begins again (e.g., when keys are struck or a mouse moved). But this triggering method is not useful for all processing times, particularly short ones. Most importantly, current screen-savers do not know when the computer has finished the processing task, rather the user has to guess when the process was completed and move the mouse or provide other input to manually terminate the screen-saver display. In addition, the time between when a user last provides input to the computer and the initiation of the screen saver display is selectable (variable) by the user.
Almost as importantly, to be useful for short processing times, a screen-saver would have to trigger immediately, i.e. when no user input is given for a fraction of a second. However, one does not want the screen saver launched when one is merely mulling over the proper word to insert in a letter one is writing on the word processor.
Yet even in the shortest processing wait period there is useful work or pleasing xe2x80x9ctasksxe2x80x9d that can be done: from reviewing the days schedule, to viewing electronic art; from answering a company survey, to perusing company bulletins; from reading e-mail (which is usually short and pithy) to entering billable time records; from viewing screensaver type newscasts (e.g., the Pointcast system), to filling out purchase orders; from viewing advertisements, to ordering merchandise to perusing the underlying xe2x80x9cdesktop.xe2x80x9d Of course, during the waiting time one could play computer games (including continuing action games like Asteroids and card games like solitaire). Current technology allows some personal computers to function as a television or radio. Technically, one could even watch television on the computer monitor or listen to radio broadcasts during these waiting periods.
U.S. Pat. No. 5,572,643 (Judson), the entire disclosure of which is incorporated by reference herein, discloses methods of displaying otherwise hidden information objects during an interstitial time. The term xe2x80x9cinterstitial timexe2x80x9d herein refers to the time period from when a user clicks on a hyperlink in an Internet web page (in order to access a new Internet web page) until that new web page has finished downloading to the user""s computer and has been displayed. Judson""s claims relate to situations in which the information object was downloaded from the Internet along with a web page and is hidden or masked and not displayed, and then is displayed after that web page is left when the user clicks on a link to a new web page (during at least part of the interstitial time). In Judson, the information object is displayed within the Internet browser, and thus operates inside of, and dependent upon, the browser. In contrast, the present invention (the subject of this patent application) teaches a method of displaying a program which was running and may have been visible prior to the launch of the current program, by hiding the current program to reveal the previously displayed program anew. In the present invention, the two programs operate outside of, and independent of, each other. The present invention is neither restricted to Internet processes nor information downloaded with a web page nor hidden information.
The Adlet Corporation claims a patent pending method of embedding a Java program applet in a web page that will open or spawn a window at the beginning (or during) the interstitial time to show an advertisement or other information object. This window closes in a timed or contingent manner. Again this relates to displaying an information object once after a specific page, rather than accessing or redisplaying an underlying and/or ongoing program or information object(s) or information stream.
Other Internet programs (whether embedded in web sites or service provider access software) spawn windows (especially ones containing advertisements) that remain on the screen even though new pages are accessed. They may remain on the screen both during the time the pages are downloading and afterwards. These programs do not automatically spawn at or during the interstitial time, or end at its conclusion or otherwise switch between programs, windows or information streams.
The primary purpose of this invention is to automatically minimize (or otherwise mask or hide) a window of a program while the program is processing information and then to automatically return the window to its previous size and position at some timed interval, or when the processing is done, or some other event occurs. The window might be returned to its previous size and position upon some other contingent event or combination of timed and contingent events. Instead of minimizing or hiding a window, the window might just be reduced in size, or moved to a different (perhaps less prominent position). (Alternatively, another program may have its window enlarged and/or repositioned to be more prominent.) The device may be alternatively characterized as automatically switching between program interfaces; switching away from the interface of a program that has begun an information processing operation and switching to the interface of a different program that is ready for user interaction, and then after the information processing operation has been completed, switching back.
This purpose may be accomplished by automatically minimizing just the window that""s involved in the processing, or by automatically minimizing more than one window, perhaps even automatically minimizing all windows. Alternatively this purpose may be accomplished by automatically placing a particular window (or windows) on the xe2x80x9ctopxe2x80x9d xe2x80x9clayerxe2x80x9d of the desktop, in a full or partial screen display, or otherwise launching or opening such a window (or windows). It may be accomplished by automatically moving one or more windows to a xe2x80x9cbackxe2x80x9d or xe2x80x9cbottomxe2x80x9d or xe2x80x9cZxe2x80x9d layer, thereby revealing other windows. It may be done by automatically re-sizing or moving one or more windows. It may be accomplished by quieting or reducing the volume of audio associated with the window or program doing the processing and/or increasing or turning on the volume of audio associated with another program. Alternatively, this purpose may be accomplished by maximizing another window, that may have been previously (1) masked (fully or partially), (2) otherwise hidden or minimized, or (3) displayed in a reduced size or less prominent position. This primary purpose may be accomplished by a combination of the above, with or without similar or related effects known to those knowledgeable in the art.
The invention may control only a particular program, in which case only that program will automatically be minimized. Alternatively the invention may control several programs, or even all programs on the computer.
The invention may contain a hierarchy of which programs will be displayed when others are being processed, or it may defer to the program that was last active. Such a hierarchy may be hard-coded, or chosen by the user as part of his or her preference settings. In other embodiments, the user may choose a xe2x80x9cchannelxe2x80x9d or program from an onscreen display that is always or sometimes visible (e.g., a taskbar or icon).
Alternatively, when the processing starts and the program is about to be minimized, the user may be queried by a pop-up dialog box or synthesized voice module, about what should be displayed during the processing. Some programs now post estimated processing times (particularly for downloads which can take hours). That would be an appropriate time for the device to query the user as to whether he or she wanted to see the day""s schedule, view a full length movie, etc.
In the preferred embodiment, when the processing stops, the window which has been minimized, hidden or reduced is returned to its former size and position, however, in an alternate embodiment, the display screen may show the image of a xe2x80x9cpausexe2x80x9d button (or some other virtual or physical control) which when pressed or activated keeps the current window on the screen and prevents the reintroduction of the former window, at least until some control is activated (such as pressing the xe2x80x9cpausexe2x80x9d button again, or pressing a xe2x80x9cresumexe2x80x9d button). Alternatively the invention may include other control or navigation buttons which change the course of what is minimized and what is maximized.
These alternate controls may include a xe2x80x9cpanicxe2x80x9d button that switches the screen to a preferred use, so that a user can quickly return to appropriate work when he or she has been using the computer to xe2x80x9cgoof off.xe2x80x9d Other controls include hyperlinks or other links that automatically connect to another item to be displayed, or otherwise launch a program or data object.
In addition to overt controls, the invention may have automatic controls. An example is an automatic pause control that does not minimize a window as long as,the user is inputting data into it (e.g., typing input for a fill-in form, or clicking items on a check list).
The invention may be embodied as a shell, plug-in or operating system or part thereof. The invention may be embodied as a multi-threaded or multi-tasking application, or may simulate such a multi-threaded or multi-tasking device. The invention may be embodied as two applications with a shell (or other coding) which switches between them, or it may be embodied as more than two such applications. The applications may be any applications used on a computer including desktop productivity programs such as spread sheets, word processors, relational data bases, paint and illustration programs, drafting or CAD programs, desktop publishing programs, photo editing programs, scheduling or calendaring programs, browsers, etc. They may be several applications or several instances of the same application.
The devices and methods that are the subject of this patent application not only have a use in their own right of switching between programs or information objects or information streams, but also in the setting of Internet or other network usage, said devices and methods will filter or block interstitial advertisements or other interstitial information objects by substituting something (e.g., a blank screen or wallpaper, an alternate program or screen-saver, etc.) during the interstitial time. These devices and methods thereby overwrite and hence block or filter the advertisement or information object embedded in the web page or otherwise downloaded data from the network.
Instead of blocking all interstitial advertisements or interstitial information objects, the device may selectively block or filter information. It may do so by scanning meta tags that accompany or are embedded in the web page containing the hidden information object. Such meta tags could contain content or rating information so that, for example, the device would filter out (i.e. xe2x80x9coverwritexe2x80x9d) violent or adult content advertisements. Alternately, the device could scan the entire web page, to recognize the tags associated with certain types of applets, or interstitial objects and filter out particular ones, or filter out everything except permitted interstitial objects. Alternatively, the device could scan the web page for certain combinations of words or characters which would act as triggering signals for the device to filter out that web page, or in the alternative, for the device to permit the interstitial object accompanying the web page to be displayed (i.e. not blocked out).